package io.lvdaxian.mybatis06.session;


import io.lvdaxian.mybatis06.builder.xml.XMLConfigBuilder;
import io.lvdaxian.mybatis06.session.defaults.DefaultSqlSessionFactory;

import java.io.Reader;

/**
 * 构建者模式：通过 io Reader 构建SqlSessionFactory
 * SqlSessionFactoryBuilder 是作为整个 Mybatis 的入口类，通过指定解析XML的IO，引导整个流程的启动
 *
 * @author lihh
 */
public class SqlSessionFactoryBuilder {
  public SqlSessionFactory build(Reader reader) {
    // 解析 xml config 构建者
    // 表示 xml reader == xml 的输入reader
    XMLConfigBuilder xmlConfigBuilder = new XMLConfigBuilder(reader);
    return build(xmlConfigBuilder.parse());
  }
  
  /**
   * 也是构建方法
   *
   * @param configuration xml 相关的配置
   * @return 返回 SqlSessionFactory
   */
  private SqlSessionFactory build(Configuration configuration) {
    return new DefaultSqlSessionFactory(configuration);
  }
}